package com.wobito.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.wobito.pojo.bean.Cabinet;
import com.wobito.pojo.dto.api.GetAllCabinetDTO;
import com.wobito.pojo.dto.cabinet.CabinetBriefDTO;
import com.wobito.pojo.dto.cabinet.CabinetDTO;
import com.wobito.pojo.vo.cabinet.AddCabinetVO;
import com.wobito.pojo.vo.cabinet.CabinetVO;
import com.wobito.pojo.vo.cabinet.UpdateCabinetVO;

import java.util.List;

/**
 * <p>
 * 柜子表 服务类
 * </p>
 *
 * @author lambyang
 * @since 2024-08-26
 */
public interface ICabinetService extends IService<Cabinet> {

    /**
     * 根据条件查询柜子列表
     * @param cabinetVO
     * @return
     */
    List<CabinetDTO> selectCabinetList(CabinetVO cabinetVO);

    /**
     * 获取柜子简略信息列表
     * @param areaId
     * @return
     */
    List<CabinetBriefDTO> selectBrief(Long areaId);

    /**
     * 获取所有柜子信息
     * @return
     */
    List<GetAllCabinetDTO> selectAllCabinet();

    /**
     * 获取所有柜子序列号列表
     * @return
     */
    List<String> selectCabinetCodeList();

    /**
     * 根据序列号获取柜子
     * @param sequenceCode
     * @return
     */
    Cabinet selectCabinetByCode(String sequenceCode);

    /**
     * 根据序号获取柜子是否在线
     * @param cabinetId
     * @return
     */
    String selectCabinetIsOnlineByCode(Long cabinetId);

    /**
     * 根据序号获取柜子是否在线
     * @param sequenceCode
     * @return
     */
    String selectCabinetIsOnlineByCode(String sequenceCode);

    /**
     * 添加柜子
     * @param addCabinetVO
     * @return
     */
    int insertCabinet(AddCabinetVO addCabinetVO);

    /**
     * 修改柜子
     * @param updateCabinetVO
     * @return
     */
    int updateCabinet(UpdateCabinetVO updateCabinetVO);
}
